package com.example.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.constant.BasePage;
import com.example.dto.OrdersDto;
import com.example.entity.Orders;

import java.time.LocalDateTime;

/**
 * <p>
 * 订单表 服务类
 * </p>
 *
 * @author czx
 * @since 2022-04-28
 */
public interface IOrdersService extends IService<Orders> {

    /**
     * 用户下单
     *
     * @param order 订单
     * @return 喜下单结果
     */
    boolean submit(Orders order);

    /**
     * * 用户的订单分页查询
     *
     * @param basePage 翻页数据
     * @return 翻页对象
     */
    Page<OrdersDto> pageWithOrderDetailAndUser(BasePage basePage);

    /**
     * 员工查询订单
     *
     * @param page  翻页数据
     * @param order 订单时间
     * @param begin 开始时间
     * @param end   结束时间
     * @return 翻页对象
     */
    Page<OrdersDto> pageWithOrderDetail(BasePage page, Orders order, LocalDateTime begin, LocalDateTime end);

    /**
     * 更新订单状态
     *
     * @param order 修改的订单
     * @return 结果
     */
    boolean updateByStatus(Orders order);

    /**
     * 再来一单
     *
     * @param order 订单
     * @return 结果
     */
    boolean again(Orders order);
}
